main.js ➔ destroyProsemirror   A
last analyzed

Complexity

Conditions 2

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 3
dl 0
loc 5
rs 10
c 0
b 0
f 0
1
import { EditorState } from 'prosemirror-state';
2
import { EditorView } from 'prosemirror-view';
3
import { Schema, Node } from 'prosemirror-model';
4
5
import { tableEditing } from 'prosemirror-tables';
6
import { history } from 'prosemirror-history';
7
import getSpec from './schema';
8
import getKeymapPlugin from './plugins/Keymap/keymap';
9
import buildInputRules from './plugins/InputRules/inputrules';
10
import initializePublicAPI from './initializePublicAPI';
11
import MenuInitializer from './plugins/Menu/MenuInitializer';
12
import getNodeViews from './nodeviews';
13
import { disableDefaultTabBehavior } from './plugins/disableDefaultTabBehavior';
14
15
initializePublicAPI();
16
17
window.Prosemirror.enableProsemirror = function enableProsemirror() {
18
    const schema = new Schema(getSpec());
19
20
    const mi = new MenuInitializer(schema);
21
22
    // PLUGIN ORDER IS IMPORTANT!
23
    const plugins = [
24
        mi.getMenuPlugin(),
25
        history(),
26
        getKeymapPlugin(schema),
27
        buildInputRules(schema),
28
        tableEditing(schema),
29
        disableDefaultTabBehavior(),
30
    ];
31
32
    const json = jQuery('#dw__editform').find('[name=prosemirror_json]').get(0);
33
    const view = new EditorView(document.querySelector('#prosemirror__editor'), {
34
        state: EditorState.create({
35
            doc: Node.fromJSON(schema, JSON.parse(json.value)),
36
            schema,
37
            plugins,
38
        }),
39
        dispatchTransaction(tr) {
40
            view.updateState(view.state.apply(tr));
41
42
            const spaces = 4;
43
            json.value = JSON.stringify(view.state.doc.toJSON(), null, spaces); // FIXME: no need to pretty print this!
44
        },
45
        nodeViews: getNodeViews(),
46
    });
47
    window.Prosemirror.view = view;
48
};
49
50
window.Prosemirror.destroyProsemirror = function destroyProsemirror() {
51
    if (window.Prosemirror.view && typeof window.Prosemirror.view.destroy === 'function') {
52
        window.Prosemirror.view.destroy();
53
    }
54
};
55